In the last 20 years personal computers have undergone enormous advancements in usability. This development has resulted in substantially deeper market penetration among people who might have little or no inclination to spend time learning to use them. From a device that was routinely used by only a few highly trained professionals, it has developed into a near-essential device that enables millions of people each day to accomplish their work and leisure tasks. One side effect of this enormous growth rate is that most users know little or nothing about the inner-workings of their personal computer and, of course, also do not know the configuration settings of the applications that they use. In some ways this is comparable to the attitude many people have regarding their cars: they know how to drive them but don't know how to repair them. In the context of this application, this type of user will be called an “average” user. In some sense, this development is a good thing, because it demonstrates that the personal computer has grown into a reliable tool and that, no great amount of training is required to operate one
However, this attitude can be counterproductive when problems occur. Broadly speaking, these types of problems can be generally categorized as being either application-based problems or operating system-based problems. Even an average user can usually distinguish between these two types of problems if for no other reason than operating system—problems usually lead to a non-functioning computer. Normally when such problems occur, the user either calls for tech support (if the problem arises at work) or approaches a friend (if the problem occurs at home) to get help. Alternatively, of course, most users know that a reset or reboot of the computer solves many operating system problems. On the other hand, when an application-based problem occurs, the operating system is usually still functioning and the problems are confined to a single application. The sorts of application-based problems that users might encounter include an inability for the user to restart the application after a crash, files that cannot be opened or saved from within the application, program outputs that are inconsistent with prior results and/or expected results, etc. In case of an application-based problem, the average user usually will call tech support or a friend and ask for help in eliminating the problem. However, application specific problems may require a much greater familiarity with both user's system software and the offending application than might be readily available.
The search for the source of an application problem might take, depending on the type of the error, only a few minutes. On the other hand, it could potentially require an expert several hours to pinpoint the source of a problem with a complex computer program. Additionally, after it is identified the effort to fix the error likely will require additional time, which impacts the user's productivity and occupies tech-support resources until the problem is solved.
The cause of an application failure might be very complex. Those of ordinary skill in the art will recognize that common sources of application problems include errors in specifying the configuration of the application, accidentally deleted support files, corrupted data and/or support files, corruption of the application by virus, application error introduced by a revision update, errors that occur after an update of the operating system, etc. Because of the multiplicity of possible causes, in some cases, tech-support will elect to re-install the offending application from a backup. However, that approach is not without its own problems.
Software to create and restore computer backups has been an integral part of computer system maintenance from the beginning. Initially backup technology was used exclusively to prevent data loss, but in recent years system administrators have come to recognize and utilize backups to fix software problems by reverting the problem application to an earlier state. Those of ordinary skill in the art will recognize that a backup typically consists of a complete image of a particular hard disk that contains all the files that were stored on that disk at the time the backup was created. The system administrator or user is typically able to use a system backup to a) recover his or her data in case of data loss and b) re-set all of the files on the hard disk to the state they were in at some earlier point in time.
There are a number of different techniques for creating and updating backups. One of these variants is the incremental backup, wherein only data that is new or has changed since the last backup (usually the last incremental backup, or last full backup) is written to the backup media. In the case of an incremental backup, each backup is based on the previous incremental backup and in order for a successful restore to take place, at least one previous incremental backup will typically be needed. Another variant is the differential backup, wherein only the files that have been changed or that have been newly created since the last full backup are written to the backup media. Both of these variants have advantages and disadvantages. For example, with respect to the incremental backup, the backup process is typically fairly quick and the amount of data transferred is relatively small; however the effort required to restore data will likely be greater because a number of different incremental backups may have to be accessed one after another. In case of the differential backup, the effort required to restore the system to its earlier state is typically considerably smaller because only two backups (e.g., the last full backup and the last differential backup) will typically have to be accessed. The amount of data transferred during each backup, however, can be considerably higher and the time to create the backup (as compared with the incremental backup) will also be higher.
Any of the above-described backup solutions could potentially be used to revert an application to a previous state. However, these sorts of traditional approaches tend to be overkill for application-based problems as they restore or overwrite much more information than is strictly necessary, including possibly overwriting user created data items that were—created or modified since the backup and which are not associated with the problem.
Thus, the process of eliminating application-based problems by restoring a computer to a pre-problem state can be quite labor intensive, because, first, the source of the error must be found, then the correct data image will need to be selected. These steps result in lost productivity hours for the average user. Additionally, there is no guarantee that files which have been created since the last backup can be saved by using a backup to address software problems. In fact, created user documents will typically be lost if additional effort (and further loss of productivity) is not expended in specifying the exact files to be restored. For example, the user will generally need to identify the documents/files manually and these files will have to be temporarily moved after they are located, else they will be overwritten. So the above described solutions lead to loss of work hours for the user and substantial effort on the part of tech-support to fix the problem and restore the personal computer to the same state that it was in before the occurrence of the problem. Additionally, in case of the backup approach to alleviating software problems there is usually no consideration given to preservation of user-created documents and files.
Thus what is needed is a method that addresses the above-identified problems. The method should be able to reduce the time required to return an application to an operational status and should also provide the average user with an option to initiate the problem solution on his/her own. The method and system should, to the extent possible, ensure that the average user does not experience data loss.
Accordingly it should now be recognized, as was recognized by the present inventors, that there exists, and has existed for some time, a very real need for a system and method that would address and solve the above-described problems.
Before proceeding to a description of the present invention, however it should be noted and remembered that the description of the invention which follows, together with the accompanying drawings, should not be construed as limiting the invention to the examples (or preferred embodiments) shown and described. This is so because those skilled in the art to which the invention pertains will be able to devise other forms of the invention within the ambit of the appended claims.